package com.live.dengdengtv.utils;

import android.content.Context;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * Created by wyf on 2016/8/29.
 */
public class ProvinceCity {

    private JSONObject mJsonObj;
    private ArrayList<String> provinceList = new ArrayList<String>();
    private Map<String, List<String>> mCitisDatasMap = new HashMap<String, List<String>>();
    private Map<String, String> provinces;

    public ProvinceCity(Context context) {
        initData(context);
    }

    public String getProvince(String id){
        String mProvince = provinces.get(id);
        return mProvince == null ? "":mProvince;
    }
    public String getProvincId(String mProvince){

        String mProvinceId = "";
        Set<Map.Entry<String, String>> set = provinces.entrySet();

        for (Map.Entry<String, String> entry:set
             ) {
            if(entry.getValue().equals(mProvince)){
                mProvinceId = entry.getKey();
                return mProvinceId;
            }
        }

        return mProvinceId;
    }


    public String getCityId(String province, String city) {
        String cityId = "";
        List<String> citys = mCitisDatasMap.get(province);
        for (int i = 0; i < citys.size(); i++) {
            if(citys.get(i).equals(city)){
                cityId = i+1+"";
                return cityId;
            }
        }
        return cityId;
    }
    public String getCity(String province, String cityId) {
        String city = "";
        List<String> citys = mCitisDatasMap.get(province);
        try {
            int index = Integer.parseInt(cityId);
            city = citys.get(index-1);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return city;
    }
    /**
     * 从文件中读取地址数据
     */
    private void initJsonData(Context context) {
        try {
            StringBuffer sb = new StringBuffer();
            InputStream is = context.getAssets().open("city.json");
            int len = -1;
            byte[] buf = new byte[1024];
            while ((len = is.read(buf)) != -1) {
                sb.append(new String(buf, 0, len, "gbk"));
            }
            is.close();
            mJsonObj = new JSONObject(sb.toString());
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
    /**
     * 解析数据
     */
    private void initDatas() {
        try {
            JSONArray jsonArray = mJsonObj.getJSONArray("citylist");
            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject jsonP = jsonArray.getJSONObject(i);
                String province = jsonP.getString("p");

                provinceList.add(province);

                JSONArray jsonCs = null;
                try {
                    jsonCs = jsonP.getJSONArray("c");
                } catch (Exception e1) {
                    continue;
                }
                ArrayList<String> mCitiesDatas = new ArrayList<String>();
                for (int j = 0; j < jsonCs.length(); j++) {
                    JSONObject jsonCity = jsonCs.getJSONObject(j);
                    String city = jsonCity.getString("n");
                    mCitiesDatas.add(city);
                    JSONArray jsonAreas = null;
                    try {
                        jsonAreas = jsonCity.getJSONArray("a");
                    } catch (Exception e) {
                        continue;
                    }

                    String[] mAreasDatas = new String[jsonAreas.length()];
                    for (int k = 0; k < jsonAreas.length(); k++) {
                        String area = jsonAreas.getJSONObject(k).getString("s");
                        mAreasDatas[k] = area;
                    }
                }
                mCitisDatasMap.put(province, mCitiesDatas);
            }

        } catch (JSONException e) {
            e.printStackTrace();
        }
        mJsonObj = null;
    }


    private void initData(Context context) {
        initJsonData(context);
        initDatas();
        getProvinceData();
    }

    private void getProvinceData(){
        provinces = new HashMap<>();
        provinces.put("1","北京");
        provinces.put("2","天津");
        provinces.put("3","上海");
        provinces.put("4","重庆");
        provinces.put("5","河北");
        provinces.put("6","山西");
        provinces.put("7","台湾");
        provinces.put("8","辽宁");
        provinces.put("9","吉林");
        provinces.put("10","黑龙江");
        provinces.put("11","江苏");
        provinces.put("12","浙江");
        provinces.put("13","安徽");
        provinces.put("14","福建");
        provinces.put("15","江西");
        provinces.put("16","山东");
        provinces.put("17","河南");
        provinces.put("18","湖北");
        provinces.put("19","湖南");
        provinces.put("20","广东");
        provinces.put("21","甘肃");
        provinces.put("22","四川");
        provinces.put("23","贵州");
        provinces.put("24","海南");
        provinces.put("25","云南");
        provinces.put("26","青海");
        provinces.put("27","陕西");
        provinces.put("28","广西");
        provinces.put("29","西藏");
        provinces.put("30","宁夏");
        provinces.put("31","新疆");
        provinces.put("32","内蒙");
        provinces.put("33","澳门");
        provinces.put("34","香港");
        /*
            北京=[东城区, 西城区, 崇文区, 宣武区, 朝阳区, 丰台区, 石景山区, 海淀区, 门头沟区, 房山区, 通州区, 顺义区, 昌平区, 大兴区, 平谷区, 怀柔区, 密云县, 延庆县],
            */
        /*
            新疆=[乌鲁木齐, 克拉玛依, 吐鲁番, 哈密, 昌吉, 博尔塔拉, 巴音郭楞, 阿克苏, 克孜勒苏, 喀什, 和田, 伊犁, 塔城, 阿勒泰, 石河子, 阿拉尔, 图木舒克, 五家渠],
             *//*
            重庆=[万州区, 涪陵区, 渝中区, 大渡口区, 江北区, 沙坪坝区, 九龙坡区, 南岸区, 北碚区, 万盛区, 双挢区, 渝北区, 巴南区, 长寿区, 綦江县, 潼南县, 铜梁县, 大足县, 壁山县, 梁平县, 城口县, 丰都县, 垫江县, 武隆县, 忠县, 开县, 云阳县, 奉节县, 巫山县, 巫溪县, 黔江区, 石柱土家族自治县, 秀山土家族苗族自治县, 酉阳土家族苗族自治县, 彭水苗族土家族自治县, 江津区, 合川区, 永川区, 南川区],
             *//*
            广东=[广州, 韶关, 深圳, 珠海, 汕头, 佛山, 江门, 湛江, 茂名, 肇庆, 惠州, 梅州, 汕尾, 河源, 阳江, 清远, 东莞, 中山, 潮州, 揭阳, 云浮],
             *//*
            浙江=[杭州, 宁波, 温州, 嘉兴, 湖州, 绍兴, 金华, 衢州, 舟山, 台州, 丽水],
             *//*
            天津=[和平区, 河东区, 河西区, 南开区, 河北区, 红挢区, 滨海新区, 东丽区, 西青区, 津南区, 北辰区, 宁河区, 武清区, 静海县, 宝坻区, 蓟县],
             *//*
            澳门=[花地玛堂区, 圣安多尼堂区, 大堂区, 望德堂区, 风顺堂区, 嘉模堂区, 圣方济各堂区],
             *//*
            广西=[南宁, 柳州, 桂林, 梧州, 北海, 防城港, 钦州, 贵港, 玉林, 百色, 贺州, 河池, 来宾, 崇左],
             *//*
            内蒙古=[呼和浩特, 包头, 乌海, 赤峰, 通辽, 鄂尔多斯, 呼伦贝尔, 巴彦淖尔, 乌兰察布, 兴安, 锡林郭勒, 阿拉善],
             *//*
            宁夏=[银川, 石嘴山, 吴忠, 固原, 中卫],
             *//*
            江西=[南昌, 景德镇, 萍乡, 九江, 新余, 鹰潭, 赣州, 吉安, 宜春, 抚州, 上饶],
             *//*
            台湾=[台北市, 高雄市, 基隆市, 台中市, 台南市, 新竹市, 嘉义市, 台北县, 宜兰县, 新竹县, 桃园县, 苗栗县, 台中县, 彰化县, 南投县, 嘉义县, 云林县, 台南县, 高雄县, 屏东县, 台东县, 花莲县, 澎湖县],
            贵州=[贵阳, 六盘水, 遵义, 安顺, 铜仁, 黔西南, 毕节, 黔东南, 黔南],
            安徽=[合肥, 芜湖, 蚌埠, 淮南, 马鞍山, 淮北, 铜陵, 安庆, 黄山, 滁州, 阜阳, 宿州, 巢湖, 六安, 亳州, 池州, 宣城],
            陕西=[西安, 铜川, 宝鸡, 咸阳, 渭南, 延安, 汉中, 榆林, 安康, 商洛],
            辽宁=[沈阳, 大连, 鞍山, 抚顺, 本溪, 丹东, 锦州, 营口, 阜新, 辽阳, 盘锦, 铁岭, 朝阳, 葫芦岛],
            山西=[太原, 大同, 阳泉, 长治, 晋城, 朔州, 晋中, 运城, 忻州, 临汾, 吕梁],
            青海=[西宁, 海东, 海北, 黄南, 海南, 果洛, 玉树, 梅西],
            香港=[中西区, 东区, 九龙城区, 观塘区, 南区, 深水区, 湾仔区, 黄大仙区, 油尖旺区, 离岛区, 葵青区, 北区, 西贡区, 沙田区, 屯门区, 大埔区, 荃湾区, 元朗区],
            四川=[成都, 自贡, 攀枝花, 泸州, 德阳, 绵阳, 广元, 遂宁, 内江, 乐山, 南充, 眉山, 宜宾, 广安, 达川, 雅安, 巴中, 资阳, 阿坝, 甘孜, 凉山],
            江苏=[南京, 无锡, 徐州, 常州, 苏州, 南通, 连云港, 淮安, 盐城, 扬州, 镇江, 泰州, 宿迁],
            河北=[石家庄, 唐山, 秦皇岛, 邯郸, 邢台, 保定, 张家口, 承德, 沧州, 廊坊, 衡水],
            西藏=[拉萨, 昌都, 山南, 日喀则, 那曲, 阿里, 林芝],
            福建=[福州, 厦门, 莆田, 三明, 泉州, 漳州, 南平, 龙岩, 宁德],
            吉林=[长春, 吉林, 四平, 辽源, 通化, 白山, 延边],
            云南=[昆明, 曲靖, 玉溪, 保山, 昭通, 丽江, 普洱, 临沧, 楚雄, 红河, 文山, 西双版纳, 大理, 德宏, 怒江傈, 迪庆],
            海南=[海口, 三亚, 五指山, 琼海, 儋州, 文昌, 万宁, 东方],
            湖北=[武汉, 黄石, 十堰, 宜昌, 襄樊, 鄂州, 荆门, 孝感, 荆州, 黄冈, 咸宁, 随州, 恩施, 仙桃, 潜江, 天门, 神农架],
            上海=[黄浦区, 卢湾区, 徐汇区, 长
        */
    }

}
